Complete the RUE spell catalog: 156 spells across levels 1-15, real healing content#45
Merged
Conversation
added 5 commits
July 6, 2026 16:02
The catalog claimed levels 1-4 but only level 1 was complete. Adds the missing L2 (8), L3 (8), L4 (11) spells, page-stamped. New schema fields: ppeNote for variable printed costs, healing.exclusive for either/or effects (Light Healing), healing.othersOnly for not-self spells.
…unds and Heal Self
…plete at 156 Restoration carries the new healing.full shape (complete restoration, no dice). Variable/conditional costs captured as ppeNote (Amulet variants, Close Rift's permanent 2 P.P.E., Rift Teleportation's half-cost classes).
…ers-only, full restoration rollSpellHealing gains a pool choice (exclusive either/or spells throw without one) and the full-restoration marker; castSpell gains healPool, refuses others-only spells aimed at the caster, and resolves full restorations to exact top-ups (coma-band H.P. included). Healing-cast tests now run against the real catalog (Heal Wounds/Heal Self/Light Healing/Greater Healing/Restoration) — the vi.mock catalog graft is gone. Web: exclusive heals default to the wounded pool.
There was a problem hiding this comment.
4 issues found across 8 files
Reply with feedback, questions, or to request a fix.
Re-trigger cubic
…est ppe-cost comment, target-picker note on healPool selection, Heal Self test bounds
There was a problem hiding this comment.
0 issues found across 3 files (changes from recent commits).
Requires human review: Auto-approval blocked by 1 unresolved issue from previous reviews.
Re-trigger cubic
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Closes #13.
The RUE spell catalog is complete: 156 spells, levels 1–15 (was 29), every entry page-stamped and transcribed from rendered pages (printed = PDF − 3, pp.198–225).
Content
healingfield: Heal Wounds (L5), Heal Self (L7, self), Light Healing (L3, either/or, others-only), Greater Healing (L8, others-only), Restoration (L14, full).ppeNote(Manipulate Objects "2 P.P.E. per five pounds", Ley Line Tendril Bolts "half for Ley Line Walkers", Close Rift's permanent 2 P.P.E. drain, Amulet's 290–500 variants), damage lines as printed strings, save quirks assavingThrowNote.Schema & engine
spellHealingSchemagainsexclusive(restores ONE declared pool per cast, caster's choice — Light Healing's "1D6 S.D.C. or 1D4 H.P."),othersOnly(cannot target the caster), andfull(complete restoration, no dice — Restoration), with cross-field refinements.rollSpellHealing(spell, rng, pool?)— throws for exclusive spells without a chosen pool (before any spend), returns{ full: true }for restorations.Backend
castSpellgainshealPool("hitPoints" | "sdc") for exclusive spells, refuses others-only spells aimed at the caster, and resolves full restorations to exact top-ups — including hauling H.P. up from the negative coma band. Everything still lands through the shared clamped heal path, so a full heal also ends the treatment course (Recovery rates & healing spells: rest/meditation/ley draw, treatment days, spell targets #42's rule).vi.mockcatalog graft from Recovery rates & healing spells: rest/meditation/ley draw, treatment days, spell targets #42 is deleted as planned.Web
> CAST :: HEAL SELF — 20 P.P.E. [194/214] → H.P. +1 · S.D.C. +15), unaffordable spells (Restoration at 750) already render dead-steel.Validation
vp checkclean; 219 tests (was 213): per-level catalog counts, healing-shape schema refinements, 8 healing-cast e2e tests on real spells (touch/self/exclusive/others-only/full/clamp/course-reset/atomicity).Builder note: the Ley Line Walker's initial picks ("3 from each of levels 1–4") now draw from the complete L1–4 lists; level-up picks (max spell level = character level) now have content all the way to 15.
Summary by cubic
Completes the RUE spell catalog with 156 spells (levels 1–15) and adds real healing rules (exclusive, others‑only, full restoration) wired through engine, backend, and web.
New Features
ppeNoteandsavingThrowNote.exclusive,othersOnly, andfullwith cross-field checks (e.g., forbid uncastableothersOnly+ self-target);rollSpellHealing(spell, rng, pool?)requires a pool for exclusive heals and returns{ full: true }for restorations.castSpelladdshealPool, rejectsothersOnlyon self, and resolves full restorations to exact top-ups (incl. from negative H.P.); spend and heal stay atomic.Migration
healPool("hitPoints" or "sdc") tocastSpellwhen casting exclusive heals likelight-healing; missing pool throws before spending.healedto include only rolled pools; restorations return full top-ups;othersOnlyheals (e.g.,greater-healing,light-healing) error on self-cast.Written for commit f993a64. Summary will update on new commits.